{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "0eddecb7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-04-03T06:18:25.093476Z",
     "start_time": "2023-04-03T06:18:25.076384Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "6ef22587",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-04-03T06:21:50.478186Z",
     "start_time": "2023-04-03T06:21:50.083823Z"
    }
   },
   "outputs": [],
   "source": [
    "df = pd.read_csv('train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "a0d50c0d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-04-03T06:22:00.124600Z",
     "start_time": "2023-04-03T06:22:00.092707Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>store_sales(in millions)</th>\n",
       "      <th>unit_sales(in millions)</th>\n",
       "      <th>total_children</th>\n",
       "      <th>num_children_at_home</th>\n",
       "      <th>avg_cars_at home(approx).1</th>\n",
       "      <th>gross_weight</th>\n",
       "      <th>recyclable_package</th>\n",
       "      <th>low_fat</th>\n",
       "      <th>units_per_case</th>\n",
       "      <th>store_sqft</th>\n",
       "      <th>coffee_bar</th>\n",
       "      <th>video_store</th>\n",
       "      <th>salad_bar</th>\n",
       "      <th>prepared_food</th>\n",
       "      <th>florist</th>\n",
       "      <th>cost</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>8.61</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>10.30</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>36509.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>62.09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>5.00</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.66</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>28206.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>121.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>14.08</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>21.30</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>21215.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>83.51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>4.02</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14.80</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>21215.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>66.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>2.13</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>17.00</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>27694.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>111.51</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   id  store_sales(in millions)  unit_sales(in millions)  total_children  \\\n",
       "0   0                      8.61                      3.0             2.0   \n",
       "1   1                      5.00                      2.0             4.0   \n",
       "2   2                     14.08                      4.0             0.0   \n",
       "3   3                      4.02                      3.0             5.0   \n",
       "4   4                      2.13                      3.0             5.0   \n",
       "\n",
       "   num_children_at_home  avg_cars_at home(approx).1  gross_weight  \\\n",
       "0                   2.0                         2.0         10.30   \n",
       "1                   0.0                         3.0          6.66   \n",
       "2                   0.0                         3.0         21.30   \n",
       "3                   0.0                         0.0         14.80   \n",
       "4                   0.0                         3.0         17.00   \n",
       "\n",
       "   recyclable_package  low_fat  units_per_case  store_sqft  coffee_bar  \\\n",
       "0                 1.0      0.0            32.0     36509.0         0.0   \n",
       "1                 1.0      0.0             1.0     28206.0         1.0   \n",
       "2                 1.0      0.0            26.0     21215.0         1.0   \n",
       "3                 0.0      1.0            36.0     21215.0         1.0   \n",
       "4                 1.0      1.0            20.0     27694.0         1.0   \n",
       "\n",
       "   video_store  salad_bar  prepared_food  florist    cost  \n",
       "0          0.0        0.0            0.0      0.0   62.09  \n",
       "1          0.0        0.0            0.0      0.0  121.80  \n",
       "2          0.0        0.0            0.0      0.0   83.51  \n",
       "3          0.0        0.0            0.0      0.0   66.78  \n",
       "4          1.0        1.0            1.0      1.0  111.51  "
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "139f471a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-04-03T06:22:11.545698Z",
     "start_time": "2023-04-03T06:22:11.504650Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 360336 entries, 0 to 360335\n",
      "Data columns (total 17 columns):\n",
      " #   Column                      Non-Null Count   Dtype  \n",
      "---  ------                      --------------   -----  \n",
      " 0   id                          360336 non-null  int64  \n",
      " 1   store_sales(in millions)    360336 non-null  float64\n",
      " 2   unit_sales(in millions)     360336 non-null  float64\n",
      " 3   total_children              360336 non-null  float64\n",
      " 4   num_children_at_home        360336 non-null  float64\n",
      " 5   avg_cars_at home(approx).1  360336 non-null  float64\n",
      " 6   gross_weight                360336 non-null  float64\n",
      " 7   recyclable_package          360336 non-null  float64\n",
      " 8   low_fat                     360336 non-null  float64\n",
      " 9   units_per_case              360336 non-null  float64\n",
      " 10  store_sqft                  360336 non-null  float64\n",
      " 11  coffee_bar                  360336 non-null  float64\n",
      " 12  video_store                 360336 non-null  float64\n",
      " 13  salad_bar                   360336 non-null  float64\n",
      " 14  prepared_food               360336 non-null  float64\n",
      " 15  florist                     360336 non-null  float64\n",
      " 16  cost                        360336 non-null  float64\n",
      "dtypes: float64(16), int64(1)\n",
      "memory usage: 46.7 MB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "abdafc8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.drop('id', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "1d5eb7b5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>store_sales(in millions)</th>\n",
       "      <th>unit_sales(in millions)</th>\n",
       "      <th>total_children</th>\n",
       "      <th>num_children_at_home</th>\n",
       "      <th>avg_cars_at home(approx).1</th>\n",
       "      <th>gross_weight</th>\n",
       "      <th>recyclable_package</th>\n",
       "      <th>low_fat</th>\n",
       "      <th>units_per_case</th>\n",
       "      <th>store_sqft</th>\n",
       "      <th>coffee_bar</th>\n",
       "      <th>video_store</th>\n",
       "      <th>salad_bar</th>\n",
       "      <th>prepared_food</th>\n",
       "      <th>florist</th>\n",
       "      <th>cost</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "      <td>360336.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>6.337376</td>\n",
       "      <td>3.043881</td>\n",
       "      <td>2.456482</td>\n",
       "      <td>0.689390</td>\n",
       "      <td>2.203813</td>\n",
       "      <td>13.822071</td>\n",
       "      <td>0.568086</td>\n",
       "      <td>0.327797</td>\n",
       "      <td>18.972706</td>\n",
       "      <td>28180.333442</td>\n",
       "      <td>0.564839</td>\n",
       "      <td>0.277394</td>\n",
       "      <td>0.504807</td>\n",
       "      <td>0.504832</td>\n",
       "      <td>0.503191</td>\n",
       "      <td>99.614729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.307980</td>\n",
       "      <td>0.784676</td>\n",
       "      <td>1.488992</td>\n",
       "      <td>1.214732</td>\n",
       "      <td>1.084293</td>\n",
       "      <td>4.614792</td>\n",
       "      <td>0.495343</td>\n",
       "      <td>0.469411</td>\n",
       "      <td>10.212912</td>\n",
       "      <td>5968.874074</td>\n",
       "      <td>0.495779</td>\n",
       "      <td>0.447713</td>\n",
       "      <td>0.499978</td>\n",
       "      <td>0.499977</td>\n",
       "      <td>0.499991</td>\n",
       "      <td>29.939435</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.510000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>20319.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>50.790000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>3.720000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>9.710000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>23593.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>70.320000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>5.780000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>13.600000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>27694.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>98.810000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>8.400000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>17.700000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>33858.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>126.620000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>22.920000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>21.900000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>36.000000</td>\n",
       "      <td>39696.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>149.750000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       store_sales(in millions)  unit_sales(in millions)  total_children  \\\n",
       "count             360336.000000            360336.000000   360336.000000   \n",
       "mean                   6.337376                 3.043881        2.456482   \n",
       "std                    3.307980                 0.784676        1.488992   \n",
       "min                    0.510000                 1.000000        0.000000   \n",
       "25%                    3.720000                 3.000000        1.000000   \n",
       "50%                    5.780000                 3.000000        2.000000   \n",
       "75%                    8.400000                 4.000000        4.000000   \n",
       "max                   22.920000                 6.000000        5.000000   \n",
       "\n",
       "       num_children_at_home  avg_cars_at home(approx).1   gross_weight  \\\n",
       "count         360336.000000               360336.000000  360336.000000   \n",
       "mean               0.689390                    2.203813      13.822071   \n",
       "std                1.214732                    1.084293       4.614792   \n",
       "min                0.000000                    0.000000       6.000000   \n",
       "25%                0.000000                    1.000000       9.710000   \n",
       "50%                0.000000                    2.000000      13.600000   \n",
       "75%                1.000000                    3.000000      17.700000   \n",
       "max                5.000000                    4.000000      21.900000   \n",
       "\n",
       "       recyclable_package        low_fat  units_per_case     store_sqft  \\\n",
       "count       360336.000000  360336.000000   360336.000000  360336.000000   \n",
       "mean             0.568086       0.327797       18.972706   28180.333442   \n",
       "std              0.495343       0.469411       10.212912    5968.874074   \n",
       "min              0.000000       0.000000        1.000000   20319.000000   \n",
       "25%              0.000000       0.000000       10.000000   23593.000000   \n",
       "50%              1.000000       0.000000       20.000000   27694.000000   \n",
       "75%              1.000000       1.000000       28.000000   33858.000000   \n",
       "max              1.000000       1.000000       36.000000   39696.000000   \n",
       "\n",
       "          coffee_bar    video_store      salad_bar  prepared_food  \\\n",
       "count  360336.000000  360336.000000  360336.000000  360336.000000   \n",
       "mean        0.564839       0.277394       0.504807       0.504832   \n",
       "std         0.495779       0.447713       0.499978       0.499977   \n",
       "min         0.000000       0.000000       0.000000       0.000000   \n",
       "25%         0.000000       0.000000       0.000000       0.000000   \n",
       "50%         1.000000       0.000000       1.000000       1.000000   \n",
       "75%         1.000000       1.000000       1.000000       1.000000   \n",
       "max         1.000000       1.000000       1.000000       1.000000   \n",
       "\n",
       "             florist           cost  \n",
       "count  360336.000000  360336.000000  \n",
       "mean        0.503191      99.614729  \n",
       "std         0.499991      29.939435  \n",
       "min         0.000000      50.790000  \n",
       "25%         0.000000      70.320000  \n",
       "50%         1.000000      98.810000  \n",
       "75%         1.000000     126.620000  \n",
       "max         1.000000     149.750000  "
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "158bda1e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def loss_rate(x):  # x is DataFrmae type\n",
    "    table = ((x.isnull().sum())/x.shape[0]).sort_values(ascending=False).map(lambda i:\"{:.2%}\".format(i))\n",
    "    return table"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "f4489594",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "store_sales(in millions)      0.00%\n",
       "unit_sales(in millions)       0.00%\n",
       "total_children                0.00%\n",
       "num_children_at_home          0.00%\n",
       "avg_cars_at home(approx).1    0.00%\n",
       "gross_weight                  0.00%\n",
       "recyclable_package            0.00%\n",
       "low_fat                       0.00%\n",
       "units_per_case                0.00%\n",
       "store_sqft                    0.00%\n",
       "coffee_bar                    0.00%\n",
       "video_store                   0.00%\n",
       "salad_bar                     0.00%\n",
       "prepared_food                 0.00%\n",
       "florist                       0.00%\n",
       "cost                          0.00%\n",
       "dtype: object"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loss_rate(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "fcdc0ca0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df['store_sales(in millions)'].hist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "cb48d860",
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['cost']\n",
    "df.drop('cost', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "c86f57a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0          62.09\n",
      "1         121.80\n",
      "2          83.51\n",
      "3          66.78\n",
      "4         111.51\n",
      "           ...  \n",
      "360331    133.42\n",
      "360332     81.85\n",
      "360333     87.07\n",
      "360334    146.72\n",
      "360335    122.47\n",
      "Name: cost, Length: 360336, dtype: float64\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>store_sales(in millions)</th>\n",
       "      <th>unit_sales(in millions)</th>\n",
       "      <th>total_children</th>\n",
       "      <th>num_children_at_home</th>\n",
       "      <th>avg_cars_at home(approx).1</th>\n",
       "      <th>gross_weight</th>\n",
       "      <th>recyclable_package</th>\n",
       "      <th>low_fat</th>\n",
       "      <th>units_per_case</th>\n",
       "      <th>store_sqft</th>\n",
       "      <th>coffee_bar</th>\n",
       "      <th>video_store</th>\n",
       "      <th>salad_bar</th>\n",
       "      <th>prepared_food</th>\n",
       "      <th>florist</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.61</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>10.30</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>36509.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5.00</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6.66</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>28206.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>14.08</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>21.30</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>21215.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.02</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>14.80</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>21215.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.13</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>17.00</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>27694.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   store_sales(in millions)  unit_sales(in millions)  total_children  \\\n",
       "0                      8.61                      3.0             2.0   \n",
       "1                      5.00                      2.0             4.0   \n",
       "2                     14.08                      4.0             0.0   \n",
       "3                      4.02                      3.0             5.0   \n",
       "4                      2.13                      3.0             5.0   \n",
       "\n",
       "   num_children_at_home  avg_cars_at home(approx).1  gross_weight  \\\n",
       "0                   2.0                         2.0         10.30   \n",
       "1                   0.0                         3.0          6.66   \n",
       "2                   0.0                         3.0         21.30   \n",
       "3                   0.0                         0.0         14.80   \n",
       "4                   0.0                         3.0         17.00   \n",
       "\n",
       "   recyclable_package  low_fat  units_per_case  store_sqft  coffee_bar  \\\n",
       "0                 1.0      0.0            32.0     36509.0         0.0   \n",
       "1                 1.0      0.0             1.0     28206.0         1.0   \n",
       "2                 1.0      0.0            26.0     21215.0         1.0   \n",
       "3                 0.0      1.0            36.0     21215.0         1.0   \n",
       "4                 1.0      1.0            20.0     27694.0         1.0   \n",
       "\n",
       "   video_store  salad_bar  prepared_food  florist  \n",
       "0          0.0        0.0            0.0      0.0  \n",
       "1          0.0        0.0            0.0      0.0  \n",
       "2          0.0        0.0            0.0      0.0  \n",
       "3          0.0        0.0            0.0      0.0  \n",
       "4          1.0        1.0            1.0      1.0  "
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(y)\n",
    "df.head()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "1abf02a2",
   "metadata": {},
   "source": [
    "# 准备数据 prepare data"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "305424bd",
   "metadata": {},
   "source": [
    "## 分割数据 split data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "ef506992",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "x_train, x_test, y_train, y_test = train_test_split(df, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "843dfdac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>store_sales(in millions)</th>\n",
       "      <th>unit_sales(in millions)</th>\n",
       "      <th>total_children</th>\n",
       "      <th>num_children_at_home</th>\n",
       "      <th>avg_cars_at home(approx).1</th>\n",
       "      <th>gross_weight</th>\n",
       "      <th>recyclable_package</th>\n",
       "      <th>low_fat</th>\n",
       "      <th>units_per_case</th>\n",
       "      <th>store_sqft</th>\n",
       "      <th>coffee_bar</th>\n",
       "      <th>video_store</th>\n",
       "      <th>salad_bar</th>\n",
       "      <th>prepared_food</th>\n",
       "      <th>florist</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>151987</th>\n",
       "      <td>3.10</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>18.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>23598.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>115705</th>\n",
       "      <td>6.92</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>12.80</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>30584.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>110130</th>\n",
       "      <td>5.18</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>11.30</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>23598.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27660</th>\n",
       "      <td>1.06</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>6.18</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>24.0</td>\n",
       "      <td>30584.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63344</th>\n",
       "      <td>10.28</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>15.20</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>34791.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        store_sales(in millions)  unit_sales(in millions)  total_children  \\\n",
       "151987                      3.10                      2.0             2.0   \n",
       "115705                      6.92                      4.0             4.0   \n",
       "110130                      5.18                      2.0             2.0   \n",
       "27660                       1.06                      2.0             0.0   \n",
       "63344                      10.28                      4.0             3.0   \n",
       "\n",
       "        num_children_at_home  avg_cars_at home(approx).1  gross_weight  \\\n",
       "151987                   0.0                         3.0         18.00   \n",
       "115705                   0.0                         1.0         12.80   \n",
       "110130                   0.0                         3.0         11.30   \n",
       "27660                    0.0                         4.0          6.18   \n",
       "63344                    0.0                         3.0         15.20   \n",
       "\n",
       "        recyclable_package  low_fat  units_per_case  store_sqft  coffee_bar  \\\n",
       "151987                 0.0      0.0            15.0     23598.0         1.0   \n",
       "115705                 0.0      1.0            23.0     30584.0         1.0   \n",
       "110130                 0.0      1.0             2.0     23598.0         0.0   \n",
       "27660                  1.0      0.0            24.0     30584.0         1.0   \n",
       "63344                  1.0      0.0             6.0     34791.0         0.0   \n",
       "\n",
       "        video_store  salad_bar  prepared_food  florist  \n",
       "151987          0.0        0.0            0.0      1.0  \n",
       "115705          1.0        1.0            1.0      1.0  \n",
       "110130          0.0        0.0            0.0      1.0  \n",
       "27660           1.0        1.0            1.0      1.0  \n",
       "63344           0.0        1.0            1.0      0.0  "
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "c7567537",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "151987    101.84\n",
       "115705    141.38\n",
       "110130     83.26\n",
       "27660      87.07\n",
       "63344      69.54\n",
       "Name: cost, dtype: float64"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.head()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "689bb9d1",
   "metadata": {},
   "source": [
    "## 标准化 standardize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "8531905c",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "x_train = scaler.fit_transform(x_train)\n",
    "x_test = scaler.transform(x_test)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "3cc90d43",
   "metadata": {},
   "source": [
    "# 构建神经网络  build DNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "id": "c3521f61",
   "metadata": {},
   "outputs": [],
   "source": [
    " # type: ignore\n",
    "model = keras.models.Sequential([\n",
    "    keras.layers.Dense(50, activation='relu', input_shape=x_train.shape[1:]),\n",
    "    keras.layers.Dense(50, activation='relu'),\n",
    "    keras.layers.Dense(50, activation='relu'),\n",
    "    keras.layers.Dense(1)\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "id": "a2e3e964",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_5\"\n",
      "_________________________________________________________________\n",
      " Layer (type)                Output Shape              Param #   \n",
      "=================================================================\n",
      " dense_20 (Dense)            (None, 50)                800       \n",
      "                                                                 \n",
      " dense_21 (Dense)            (None, 50)                2550      \n",
      "                                                                 \n",
      " dense_22 (Dense)            (None, 50)                2550      \n",
      "                                                                 \n",
      " dense_23 (Dense)            (None, 1)                 51        \n",
      "                                                                 \n",
      "=================================================================\n",
      "Total params: 5,951\n",
      "Trainable params: 5,951\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "id": "f7f1d9bc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/50\n",
      "6757/6757 [==============================] - 6s 878us/step - loss: 23.8810 - val_loss: 23.9476\n",
      "Epoch 2/50\n",
      "6757/6757 [==============================] - 10s 1ms/step - loss: 23.8521 - val_loss: 23.9338\n",
      "Epoch 3/50\n",
      "6757/6757 [==============================] - 12s 2ms/step - loss: 23.8272 - val_loss: 23.9822\n",
      "Epoch 4/50\n",
      "6757/6757 [==============================] - 11s 2ms/step - loss: 23.7943 - val_loss: 23.9413\n",
      "Epoch 5/50\n",
      "6757/6757 [==============================] - 9s 1ms/step - loss: 23.7682 - val_loss: 23.8910\n",
      "Epoch 6/50\n",
      "6757/6757 [==============================] - 8s 1ms/step - loss: 23.7403 - val_loss: 23.9155\n",
      "Epoch 7/50\n",
      "6757/6757 [==============================] - 11s 2ms/step - loss: 23.7156 - val_loss: 24.0313\n",
      "Epoch 8/50\n",
      "6757/6757 [==============================] - 8s 1ms/step - loss: 23.6928 - val_loss: 23.8200\n",
      "Epoch 9/50\n",
      "6757/6757 [==============================] - 9s 1ms/step - loss: 23.6799 - val_loss: 23.7512\n",
      "Epoch 10/50\n",
      "6757/6757 [==============================] - 12s 2ms/step - loss: 23.6544 - val_loss: 23.8846\n",
      "Epoch 11/50\n",
      "6757/6757 [==============================] - 12s 2ms/step - loss: 23.6459 - val_loss: 23.7382\n",
      "Epoch 12/50\n",
      "6757/6757 [==============================] - 7s 1ms/step - loss: 23.6185 - val_loss: 23.6875\n",
      "Epoch 13/50\n",
      "6757/6757 [==============================] - 9s 1ms/step - loss: 23.6030 - val_loss: 23.8006\n",
      "Epoch 14/50\n",
      "6757/6757 [==============================] - 12s 2ms/step - loss: 23.5903 - val_loss: 23.6631\n",
      "Epoch 15/50\n",
      "6757/6757 [==============================] - 12s 2ms/step - loss: 23.5715 - val_loss: 23.6640\n",
      "Epoch 16/50\n",
      "6757/6757 [==============================] - 12s 2ms/step - loss: 23.5567 - val_loss: 23.7624\n",
      "Epoch 17/50\n",
      "6757/6757 [==============================] - 11s 2ms/step - loss: 23.5392 - val_loss: 23.7703\n",
      "Epoch 18/50\n",
      "6757/6757 [==============================] - 13s 2ms/step - loss: 23.5275 - val_loss: 23.6269\n",
      "Epoch 19/50\n",
      "6757/6757 [==============================] - 12s 2ms/step - loss: 23.5063 - val_loss: 23.8902\n",
      "Epoch 20/50\n",
      "6757/6757 [==============================] - 12s 2ms/step - loss: 23.5040 - val_loss: 23.6621\n",
      "Epoch 21/50\n",
      "6757/6757 [==============================] - 8s 1ms/step - loss: 23.4862 - val_loss: 23.5698\n",
      "Epoch 22/50\n",
      "6757/6757 [==============================] - 6s 831us/step - loss: 23.4780 - val_loss: 23.5756\n",
      "Epoch 23/50\n",
      "6757/6757 [==============================] - 5s 813us/step - loss: 23.4646 - val_loss: 23.6238\n",
      "Epoch 24/50\n",
      "6757/6757 [==============================] - 6s 817us/step - loss: 23.4552 - val_loss: 23.6662\n",
      "Epoch 25/50\n",
      "6757/6757 [==============================] - 6s 820us/step - loss: 23.4332 - val_loss: 23.5953\n",
      "Epoch 26/50\n",
      "6757/6757 [==============================] - 6s 816us/step - loss: 23.4314 - val_loss: 23.5957\n",
      "Epoch 27/50\n",
      "6757/6757 [==============================] - 6s 828us/step - loss: 23.4066 - val_loss: 23.7372\n",
      "Epoch 28/50\n",
      "6757/6757 [==============================] - 6s 819us/step - loss: 23.4069 - val_loss: 23.6311\n",
      "Epoch 29/50\n",
      "6757/6757 [==============================] - 6s 835us/step - loss: 23.3821 - val_loss: 23.4993\n",
      "Epoch 30/50\n",
      "6757/6757 [==============================] - 6s 822us/step - loss: 23.3720 - val_loss: 23.5081\n",
      "Epoch 31/50\n",
      "6757/6757 [==============================] - 5s 813us/step - loss: 23.3520 - val_loss: 23.5681\n",
      "Epoch 32/50\n",
      "6757/6757 [==============================] - 6s 820us/step - loss: 23.3350 - val_loss: 23.4486\n",
      "Epoch 33/50\n",
      "6757/6757 [==============================] - 6s 824us/step - loss: 23.3265 - val_loss: 23.5370\n",
      "Epoch 34/50\n",
      "6757/6757 [==============================] - 6s 820us/step - loss: 23.3215 - val_loss: 23.4549\n",
      "Epoch 35/50\n",
      "6757/6757 [==============================] - 6s 847us/step - loss: 23.2909 - val_loss: 23.4782\n",
      "Epoch 36/50\n",
      "6757/6757 [==============================] - 6s 851us/step - loss: 23.2768 - val_loss: 23.4416\n",
      "Epoch 37/50\n",
      "6757/6757 [==============================] - 6s 858us/step - loss: 23.2751 - val_loss: 23.5548\n",
      "Epoch 38/50\n",
      "6757/6757 [==============================] - 6s 839us/step - loss: 23.2614 - val_loss: 23.5291\n",
      "Epoch 39/50\n",
      "6757/6757 [==============================] - 6s 882us/step - loss: 23.2479 - val_loss: 23.4721\n",
      "Epoch 40/50\n",
      "6757/6757 [==============================] - 11s 2ms/step - loss: 23.2419 - val_loss: 23.3794\n",
      "Epoch 41/50\n",
      "6757/6757 [==============================] - 9s 1ms/step - loss: 23.2291 - val_loss: 23.4144\n",
      "Epoch 42/50\n",
      "6757/6757 [==============================] - 6s 884us/step - loss: 23.2164 - val_loss: 23.4040\n",
      "Epoch 43/50\n",
      "6757/6757 [==============================] - 7s 974us/step - loss: 23.2011 - val_loss: 23.5990\n",
      "Epoch 44/50\n",
      "6757/6757 [==============================] - 6s 937us/step - loss: 23.2019 - val_loss: 23.3523\n",
      "Epoch 45/50\n",
      "6757/6757 [==============================] - 6s 895us/step - loss: 23.1916 - val_loss: 23.4060\n",
      "Epoch 46/50\n",
      "6757/6757 [==============================] - 6s 919us/step - loss: 23.1911 - val_loss: 23.3216\n",
      "Epoch 47/50\n",
      "6757/6757 [==============================] - 6s 915us/step - loss: 23.1784 - val_loss: 23.3219\n",
      "Epoch 48/50\n",
      "6757/6757 [==============================] - 6s 932us/step - loss: 23.1644 - val_loss: 23.3072\n",
      "Epoch 49/50\n",
      "6757/6757 [==============================] - 7s 984us/step - loss: 23.1549 - val_loss: 23.3781\n",
      "Epoch 50/50\n",
      "6757/6757 [==============================] - 7s 971us/step - loss: 23.1564 - val_loss: 23.3716\n"
     ]
    }
   ],
   "source": [
    "model.compile(loss='mae', optimizer=\"adam\")\n",
    "history = model.fit(x_train, y_train, epochs=50, validation_split=0.2, batch_size=32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "id": "6ee429e5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2816/2816 [==============================] - 2s 608us/step - loss: 23.2606\n"
     ]
    }
   ],
   "source": [
    "mse_test = model.evaluate(x_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "id": "bd29ed2d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>loss</th>\n",
       "      <th>val_loss</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>23.880980</td>\n",
       "      <td>23.947556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>23.852079</td>\n",
       "      <td>23.933792</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>23.827177</td>\n",
       "      <td>23.982155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>23.794312</td>\n",
       "      <td>23.941334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>23.768171</td>\n",
       "      <td>23.891027</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        loss   val_loss\n",
       "0  23.880980  23.947556\n",
       "1  23.852079  23.933792\n",
       "2  23.827177  23.982155\n",
       "3  23.794312  23.941334\n",
       "4  23.768171  23.891027"
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(history.history).head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "id": "73816d10",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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TqcjJyeHV199lZUrV3Lp0iWKi4vJy8sjPj6+1k08duwY3bp1MwcrAAMHDsRoNHLixAmGDBnC5MmTufnmmxkxYgTDhw/nvvvuIzIyEoAZM2YwZcoUvvjiC4YPH8699957XTFZe5McFkfa8i6UFECz/tBySNn5AU+p+SxZl2Dz285py8UqEm5NJI9FCFGfaDTqtIzBR3105pcVU/2jR4/GaDTy888/k5CQwKZNm3jggQcAeP755/nhhx94/fXX2bRpE/v376dLly6VbvBorer26zOdX7BgAdu2bWPAgAF88803xMTEsH37dgBmzZrFkSNHuO2221i7di0dO3Zk2bJltW5XdSRgcZSsJNizUD2+4a8Vf4ENXnBz6Uqhre9D2hnHtqWkCJLUPYQqHWEBCDStFJKARQghnMXb25u77rqLr776iq+//pqYmBh69VIXRmzatInJkydz55130qVLFyIiIqrck89aHTt2ZP/+/eTk5JjPbdmyBa1WS0xMjPlcjx49mDlzJlu3bqVz584sXrzY/FxMTAzPPvssq1ev5q677mLhwoV2aVtVJGBxlC3vQXE+RPeFVkOvf779bdD6JjW/ZdXfHduW5GNqWzwDIaRV5deYljZnytJmIYRwpgkTJvDzzz/z2WefmUdXANq0acPSpUvZv38/Bw4cYPz48detKKrNe3p5eTFp0iQOHz7MunXrmD59Og8++CDh4eGcO3eOmTNnsm3bNuLi4li9ejUnT56kQ4cO5OXlMW3aNNavX09cXBxbtmxh165dFXJcHEECFkfIugy7P1OPrx1dMdFo4JY31TL5J3+FU2uuv8ZezPkr3dXNDitjLs8vAYsQQjjTTTfdREhICCdOnGD8+PHm8++88w7BwcEMGDCA0aNHc/PNN9OzZxWj5Fby8fFh1apVXLlyhdjYWO655x6GDRvGnDlzzM8fP36cu+++m5iYGB577DGmTZvG448/jk6nIy0tjYkTJxITE8N9993HqFGjmDVrll3aVhVJunWErf9TRzSaxqqjKFVpHAN9n4Btc+DXv0LLG0DvYf/2mHZorip/BaQ8vxBCuIhOp+PSpUvXnW/RogVr166tcG7q1KkVvrdmiuja7XW6dOly3f1NwsPDq8xJ8fDw4Ouvv77uvNFotEt+TVVkhMXespNh13z1+IYXa06+uuGv4Bum1knZPtcxbbq4T32s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nz59OHv2LL/88guTJk2q8jUFBQUUFJQtC87MVDfnKyoqoqioyJYfp1Kme9nznuV1i/Jn+o2tefeP07z842G6NPGjZaivQ96rVlrciN7DD03mBYrPb0GJ7lflpbrEQ2iBktAOGGvoN11oDNqE7RQnHUEJ7WC//k4+iv6zERj7PoHxxpdrdy83oMm4hB5QfBtTfE3faH0j0AElGRdq7O9rOfr3W1Qk/e1c0t/OZWt/W3q9zQGLoijMmDGDQYMG0blzxcTKlStXMm7cOHJzc4mMjGTNmjWEhoZWea9x48aRkpLCoEGDUBSF4uJinnzySV588cUqXzN79mxeffXV686vXr0aHx+fSl5RO2vWrLH7PU2aK9AmQMvpTHj4080827kEvRumQ/fw606zK5tJ+OVtDkZPrvK64XG78QW2nc0iLeWXau/ZNdeblsCZ7b9wPL7sz622/d0ucRntSwrI27OEP/J61epe7iDy6k76AFcK9Wz+pWKftk1KpyNw6dhu9uZV399VceTvt7ie9LdzSX87l7X9nZuba9F1Ngcs06ZN4+DBg2zevPm652688Ub2799Pamoq8+bN47777mPHjh2EhYVVcidYv349r7/+OnPnzqVv376cPn2ap59+msjISF5+ufL/Hc+cOZMZM2aYv8/MzCQ6OpqRI0cSEFBJZVUbFRUVsWbNGkaMGIHBYLDbfa/Ve3A+d3ywjQs5RezXtOIft7Z32HvZSnPGC5ZspkXuAZrePAJ0lfRHfiaGfWoV3753PATewdXeU7vrAqxeR9ugElrdeqvd+lu35HMAfAuSuXXEUDUBuA7T7k6E8xDctB233nprhec0h7JhxXdEBWqJuOa5mjjr91uopL+dS/rbuWztb9MMSU1sClimT5/OihUr2LhxI02bNr3ueV9fX9q0aUObNm3o168fbdu2Zf78+VUm0b788ss8+OCDTJkyBYAuXbqQk5PDY489xt///ne02uuHGzw9PfH09LzuvMFgcMgvpqPuaxLdyMB/7u3GI4t288X2eJo38mXK4FYOez+btB0GPqFoclMxJGyFtsOvvyaxNBclIApDQOUBagXh6vJubepJtOX6t1b9rShwaS8AGhQM6WehSQ/b7uUu8tIA0AZEVOgnAILUv4ParKTrn7OQo3+/RUXS384l/e1c1va3pddaNfGgKArTpk1j6dKlrF27lpYt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9te3b18+//xzYmJiuHz5Mq+99hoDBgzgyJEjDu1vCVhqoNFoKnyvKMp154RjSN/b37Rp0zh48CCbN2++7jnpb/tq164d+/fvJz09nR9++IFJkyaxYcMG8/PS3/aRkJDA008/zerVq/Hy8qryOulv+xk1apT5uEuXLvTv35/WrVuzaNEi+vXrBzimv2VKqAqhoaHodLrrRlOSk5OvixyFfZmyzaXv7Wv69OmsWLGCdevW0bRpU/N56W/H8PDwoE2bNvTu3ZvZs2fTrVs33nvvPelvO9uzZw/Jycn06tULvV6PXq9nw4YN/O9//0Ov15v7VPrbcXx9fenSpQunTp1y6O+3BCxV8PDwoFevXqxZs6bC+TVr1jBgwAAXtaphaNmyJRERERX6vrCwkA0bNkjf20BRFKZNm8bSpUtZu3YtLVu2rPC89LdzKIpCQUGB9LedDRs2jEOHDrF//37zV+/evZkwYQL79++nVatW0t8OVlBQwLFjx4iMjHTs73etUnbruSVLligGg0GZP3++cvToUeWZZ55RfH19lfPnz7u6aXVeVlaWsm/fPmXfvn0KoLz99tvKvn37lLi4OEVRFOWNN95QAgMDlaVLlyqHDh1S7r//fiUyMlLJzMx0ccvrnieffFIJDAxU1q9fryQmJpq/cnNzzddIf9vXzJkzlY0bNyrnzp1TDh48qPztb39TtFqtsnr1akVRpL8drfwqIUWR/ra3v/zlL8r69euVs2fPKtu3b1duv/12xd/f3/zZ6Kj+loClBh988IHSvHlzxcPDQ+nZs6d5KaionXXr1inAdV+TJk1SFEVdGvfKK68oERERiqenpzJkyBDl0KFDrm10HVVZPwPKggULzNdIf9vXww8/bP53o3HjxsqwYcPMwYqiSH872rUBi/S3ff3pT39SIiMjFYPBoDRp0kS56667lCNHjpifd1R/axRFUWo3RiOEEEII4ViSwyKEEEIItycBixBCCCHcngQsQgghhHB7ErAIIYQQwu1JwCKEEEIItycBixBCCCHcngQsQgghhHB7ErAIIYQQwu1JwCKEEEIItycBixBCCCHcngQsQgghhHB7ErAIIYQQwu39P0wR3Lgfii0dAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.DataFrame(history.history).plot(grid=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "id": "fc2906c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_new = x_test[:8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1/1 [==============================] - 0s 42ms/step\n"
     ]
    }
   ],
   "source": [
    "y_pred = model.predict(x_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "id": "eb3aaa99",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "265946     66.37\n",
       "222203     77.24\n",
       "237413     58.16\n",
       "336298     55.96\n",
       "104945    109.14\n",
       "237363     59.86\n",
       "190946    146.72\n",
       "28338     101.96\n",
       "Name: cost, dtype: float64"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test[:8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "id": "df0b1d0c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[100.79321 ],\n",
       "       [ 95.104034],\n",
       "       [ 85.32041 ],\n",
       "       [ 98.06683 ],\n",
       "       [ 89.958954],\n",
       "       [ 66.41212 ],\n",
       "       [ 87.67026 ],\n",
       "       [ 89.57003 ]], dtype=float32)"
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred[:8]"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "5fbc0d5a",
   "metadata": {},
   "source": [
    "# 预测 predict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "id": "72bc1924",
   "metadata": {},
   "outputs": [],
   "source": [
    "target = pd.read_csv('test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "id": "0dec29f5",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_target = scaler.fit_transform(target.drop('id', axis=1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "id": "f697ba39",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.26794107,  1.22106489, -0.97756259, ..., -1.00883078,\n",
       "        -1.00889798, -1.00363656],\n",
       "       [ 0.16514114, -1.33327669, -0.3052541 , ...,  0.99124652,\n",
       "         0.99118049,  0.99637662],\n",
       "       [ 0.6005291 , -0.0561059 , -1.64987108, ...,  0.99124652,\n",
       "         0.99118049, -1.00363656],\n",
       "       ...,\n",
       "       [-0.01627052, -0.0561059 , -1.64987108, ...,  0.99124652,\n",
       "         0.99118049, -1.00363656],\n",
       "       [ 0.479588  , -1.33327669, -1.64987108, ...,  0.99124652,\n",
       "         0.99118049,  0.99637662],\n",
       "       [ 0.36469395, -0.0561059 , -0.97756259, ..., -1.00883078,\n",
       "        -1.00889798, -1.00363656]])"
      ]
     },
     "execution_count": 168,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "id": "ccb0202f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7507/7507 [==============================] - 5s 602us/step\n"
     ]
    }
   ],
   "source": [
    "y_target = model.predict(x_target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "id": "e1ee117a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[114.70466 ],\n",
       "       [ 95.77499 ],\n",
       "       [ 86.742645],\n",
       "       ...,\n",
       "       [ 85.83837 ],\n",
       "       [ 95.62051 ],\n",
       "       [110.77112 ]], dtype=float32)"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "id": "6d8e8b50",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission = pd.DataFrame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "id": "b5719ac4",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission['id'] = target['id']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "id": "b80a0438",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission['cost'] = y_target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "id": "793faa5f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>cost</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>360336</td>\n",
       "      <td>114.704659</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>360337</td>\n",
       "      <td>95.774986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>360338</td>\n",
       "      <td>86.742645</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>360339</td>\n",
       "      <td>95.576340</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>360340</td>\n",
       "      <td>65.696167</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       id        cost\n",
       "0  360336  114.704659\n",
       "1  360337   95.774986\n",
       "2  360338   86.742645\n",
       "3  360339   95.576340\n",
       "4  360340   65.696167"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "submission.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "id": "b35dce6f",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission.to_csv('sub.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "abaf4886",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
